iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
佛心分享-IT 人自學之術

靠近 ASP .NET Core 一點點系列 第 13

Day 13 Logging : 系統基本、輸出、錯誤資訊可以怎麼紀錄 ?

  • 分享至 

  • xImage
  •  

分享主軸

  • 分享預設的 Logging 種類
  • Logging 等級
  • 組態內預設 Logging 代表意思

預設 Logging Provider(Log 提供者)

ASP .NET Core 預設 Provider 有四種以及註冊寫法

  1. Console : Logging.AddConsole()
  2. Debug : Logging.AddDebug()
  3. EventSource : Logging.AddEventSourceLogger()
  4. Windows EventLog : Logging.AddEventLog()

這些預設的 Logging Provider 是不提供檔案寫入功能,必須依靠第三方套件

  • 當然也可以清除所有預設,增加其它的 Provider
    builder.Logging.ClearProviders();

基本 Logging 等級

前情提要 : 基本上 Log 等級很多文章與影片已經介紹許多,這邊稍微列出與依照過往開發經驗,分享個人對於等級使用的時機 ( 沒有對錯 ~~ )

LogTrace

  • 描述: 記錄非常詳細的紀錄,用於追蹤應用程式的每個環節和操作
  • 使用場景 : 紀錄每個環節,主要是讓開發者知道,比如這隻 API 程式怎麼運作的,所以每一層可能都會埋
  • 範例: 記錄每個方法的進入和退出、每個條件判斷的結果等

LogDebug

  • 描述: 用於記錄開發,需要(想要)知道的資訊,這些資訊對開發者來說是有用的,但在正式環境中不需要
  • 使用場景 : 想知道程式一些 DEBUG 偵錯資訊或是一些變數輸出狀況
  • 範例: 記錄變數的值、方法的參數、串接過程中的中間結果等等

LogInformation

  • 描述: 用於記錄一般資訊,這些信息對於了解應用程式的運行情況是有用的
  • 使用場景 : 如果不 DEBUG,但又想知道一些基本資訊
  • 範例: 比如記錄比如登入者是誰、操作是否成功

LogWarning

  • 描述: 用於記錄警告資訊,這些資訊表示可能存在問題(有警告的事情發生,特別留意紀錄的),但不會導致應用- 程式停止
  • 使用場景: 在開發時,當發生需要注意但不致命的事件
    範例: 比如記錄使用者輸入錯誤次數過多(輸入的帳密錯誤三次等)、資源使用接近上限等,就可以用這個紀錄

LogError 與 LogCritical

  • 描述: 用於記錄錯誤信息,這些錯誤通常是應用程式無法處理的
    ( 若要再細分,LogCritical 等級是比 LogError 嚴重的 )
  • 使用場景: 當發生無法處理的錯誤和例外狀況時使用
    範例: 記錄未處理的例外、數據庫連接失敗、記錄系統崩潰等

等級低到高
Trace - Debug - Information - Warning - Error - Critical

參考文章
https://www.cnblogs.com/wewant/p/17489802.html?glarity_translate=1

https://learn.microsoft.com/zh-tw/dotnet/api/microsoft.extensions.logging.loglevel?view=net-8.0

ASP .NET Core 預設組態設定內 Logging 說明

https://ithelp.ithome.com.tw/upload/images/20240926/20133954AHW9zPHX3G.png

如上圖,LogLevel 配置,在 ASP.NET Core 中,LogLevel 配置用於控制日誌輸出的詳細程度。
這些配置可以在 appsettings.json 和 appsettings.{Environment}.json 文件中設置,以便在不同的環境中使用不同的日誌級別

Default : 所有執行到的每一行code,只要有執行到 log.information 等級以上的,就會印出來

Microsoft.AspNetCore : 指的是在 Default下唯獨 Microsoft.AspNetCore 命名空間下的所有類別,只要有寫log,就只有 Warning 以上的等級會印出來

附上 Logging 註冊以及寫法教學文章
https://jakeydocs.readthedocs.io/en/latest/fundamentals/logging.html?glarity_translate=1

簡單統整今日重點

  • 了解 Logging 預設有的以及等級
  • 了解組態內 Logging 代表意思

今日結語
簡單分享 Logging,它對於開發來說是非常置重要一環,Log 埋的好,對於系統日後維運是非常可靠的

每天累積一點,一定可以! 明日繼續加油 ~~

提供除了內建預設外的第三方套件文章

https://github.com/NLog/NLog/wiki/Getting-started?glarity_translate=1

https://logging.apache.org/log4net/release/manual/configuration.html?glarity_translate=1

https://serilog.net/?glarity_translate=1

https://stackify.com/nlog-vs-log4net-vs-serilog/?glarity_translate=1


上一篇
Day 12 組態 Configuration : 如何設定與取得 ?
下一篇
Day 14 Entity Framework Core
系列文
靠近 ASP .NET Core 一點點14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言